
모던 JS Deep Dive - 1. 프로그래밍
Web Frontend / TIL / JavaScript
2023.03.12.
1.1 프로그래밍이란?
- 프로그래밍이란 컴퓨터에게 실행을 요구하는 커뮤니케이션
- 무엇을 실행하고 싶은지 정의해야 하고 해결해야 할 문제를 명확히 이해하고 적절한 문제 해결방안을 정의할 필요가 있다. 문제해결능력
- 프로그래밍이란? 0과 1 밖에 모르는 기계가 실행할 수 있도록 정확하고 상세하게 요구사항 설명하는 작업
- 사람과 다른 컴퓨터의 사고, 인지 방식, 상대적인 개념으로 기준 불명확
- 사람 일반적 사고방식은 매우 포괄적
- ex) 듣다, 소리 크기를 “크다”, 또는 “작다”
- 컴퓨터 사고 방식은 양적 개념인 숫자를 사용하고 논리적 수학적 사고가 필요
- ex) 현재 볼륨보다 1단계 크게 조정, 볼륨을 60으로 조정
- 사람 일반적 사고방식은 매우 포괄적
- 따라서, 컴퓨터 관점에서 문제를 사고**(Computational thinking)**해야 한다.
-
해결과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가가능하도록 정의해야 한다.
-
복잡함을 단순하게 분해하고 자료를 정리하고 구분해야 하며 순서에 맞게 행위를 배열해야한다.
-
1.2 프로그래밍 언어
- 정의 된 문제 해결 방안을 수행하는 명령을 컴퓨터에게 전달해야한다.
- 명령은 사람이 이해하는 자연어가 아니라 컴퓨터가 이해할 수 있는 언어, 기계어로 전달해야한다.
- 사람이 기계어로 이해해서 직접 명령을 전달하기에는 비트단위로 기술되어 있어 매우 어려운 일이다.
- 기계어로 직접 전달하는 대신 약속된 **구문(syntax)**로 구성된 프로그래밍 언어를 사용해 프로그램 작성 후, 기계어로 변환하는 일종의 번역기, 컴파일러(compiler) 혹은 **인터프리터(interpreter)**를 사용한다.
- 언어 - 자연어, 인공어
- 프로그래밍은 프로그래밍 언어를 사용해 컴퓨터에게 실행을 요구하는 커뮤니케이션
- 프로그래밍 언어는 구문(syntax)와 의미(semantics)의 조합으로 표현됨.
1.3 구문과 의미
-
외국어 학습과 유사하게 프로그래밍 학습은 언어의 문법을 배우는 것으로 시작한다.
-
하지만, 문법을 잘 안다고 외국어를 잘하는 것은 아니다.
-
문법에 맞는 문장을 구성하는 것, 의미를 가지고 있어야 언어의 역할을 할 수 있다.
-
해성 밥 초록 잠 운동 새롭게 => ?
-
아래 코드도 문법적으로 문제는 없지만 number에 문자열이 할당되어 있으므로 의미적으로 옳지 않다.
const number = "string"; console.log(number*number); //Nan
-
-
따라서, 프로그래밍 언어의 문법에 부합하는 것뿐 아니라, 수행하고자 하는 바를 정확히 수행하는 것, 즉 **요구사항이 실현(문제가 해결)**되어야 의미가 있다.
-
대부분 프로그래밍 언어는 “변수와 값”, “키워드”, “연산자”, “표현식과 문”, “조건문”과 “반복문”에 의한 “흐름제어(control flow)”, “함수” 그리고 자료구조인 “객체”, “배열” 등과 같은 문법 제공
-
프로그래밍 언어가 제공하는 문법을 적절히 사용하여 변수를 통해 값을 저장하고 참조하며 연산자로 값을 연산, 평가하고 조건문과 반복문에 의한 흐름제어로 코드의 실행 순서를 제어하고 함수로 재사용 가능한 문의집합을 만들며 객체, 배열 등으로 자료를 구조화한다.
‘프로그래밍은 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것’
출처
- 이웅모, 『모던 자바스크립트 Deep Dive 자바스크립트의 기본 개념과 동작 원리』, 위키북스(2020).